import copy

# ----------------可变类型（列表、字典、集合）------------------
L = [1, 2, 3]
a = {'key': L}
b = copy.deepcopy(a)

print(id(a))
print(id(b))
"""
id(a)与id(b)结果不一致，说明拷贝后新生成的对象是不同的
"""
L.append(4)  # 向a的子对象添加一个元素
print(a)  # 结果： {'key': [1, 2, 3, 4]}
print(b)  # 结果： {'key': [1, 2, 3]}
"""
说明：
对于可变类型，深拷贝后新生成的对象与原对象是两个独立的对象，并且对象中的子对象也不同
实际上，深拷贝是指重新分配一块内存，创建一个新的对象，并且将原对象中的
元素，以递归的方式，通过创建新的子对象拷贝到新对象中。
"""
# ----------------不可变类型（数字、字符串、元组）------------------
c = 1234
d = copy.deepcopy(c)

print(id(c))
print(id(d))
"""
id(c)与id(d)结果一致，说明拷贝后新生成的对象是相同的
通过上面的执行结果可以得知，不可变类型（数字、字符串、元组）进行深拷贝不会给
拷贝的对象开辟新的内存空间，而只是拷贝了这个对象的引用。
"""
